package org.quincy.rock.core.dao;

import org.quincy.rock.core.dao.sql.Match;
import org.quincy.rock.core.lang.DataType;

/**
 * <b>Value拦截器。</b>
 * <p><b>详细说明：</b></p>
 * <!-- 在此添加详细说明 -->
 * 无。
 * 
 * @version 1.0
 * @author wks
 * @since 1.0
 */
public interface ValueInterceptor {
	/**
	 * 无操作。
	 */
	public final static ValueInterceptor NOOP = (v, dt, m) -> v;

	default Object apply(Object value, DataType dt) {
		return apply(value, dt, null);
	}

	/**
	 * 拦截value
	 * @param value 值
	 * @param dt 数据类型
	 * @param match like匹配模式,如果不是like则Match参数传null值
	 * @return 修正后的value
	 */
	public Object apply(Object value, DataType dt, Match match);

}
